Mac 应用迁移到硬盘

假设有一个软件A,它默认会在/Applications目录下放一个A.app文件(文件夹),以及会在~/Library/Application Support/A目录下放其它的必要文件。

假设你要把软件装到你的移动硬盘/Volumes/MobileDisk上,可以这么干:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 在移动硬盘上创建应用程序目录。
mkdir /Volumes/MobileDisk/Applications
# 把A.app移到移动硬盘上。
mv /Applications/A.app /Volumes/MobileDisk/Applications
# 把A.app文件链接回内部硬盘。
ln -s /Volumes/MobileDisk/Applications/A.app /Applications

# 在移动硬盘上创建库目录和Application Support目录。
mkdir -p /Volumes/MobileDisk/Library/Application\ Support
# 把A.app的Application Support目录移到移动硬盘上。
mv ~/Library/Application\ Support/A /Volumes/MobileDisk/Library/Application\ Support
# 把A.app的Application Support/A目录链接回内部硬盘。
ln -s /Volumes/MobileDisk/Library/Application\ Support/A ~/Library/Application\ Support

或者在 Finder 中进行拖拽,直接在 应用 中将要选择迁移的应用拖拽到新的磁盘中,然后运行以下脚本创建软链接。这样应用就可以在启动台里面看见和搜索到了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
import glob


def main():
source_path = "/Applications"
# 外置磁盘存放软件的目录,可自行修改
target_path = "/Volumes/disk/Applications"
apps = glob.glob(target_path+"/*.app")
for app in apps:
app_name = app.rsplit("/", 1)[1]
source_app_path = "%s/%s" % (source_path, app_name)
if not os.path.isdir(source_app_path) and not os.path.islink(source_app_path):
mv_command = "ln -s \"%s\" \"%s\"" % (app, source_path)
os.system(mv_command)

if __name__ == "__main__":
main()